linux pro*c环境配置,打造ubuntu下精简版的oracle客户端及pro*c编译环境

您所在的位置:网站首页 linux c环境 linux pro*c环境配置,打造ubuntu下精简版的oracle客户端及pro*c编译环境

linux pro*c环境配置,打造ubuntu下精简版的oracle客户端及pro*c编译环境

2024-07-10 13:11| 来源: 网络整理| 查看: 265

oracle的pro*c简介

安装oracle客户端

安装sqlpus

安装pro*c

ORACLE的PRO*C曾经很流行,虽然现在不被推崇,但是已经比较成熟项目依然使用,所以打造自己的pro*c编译环境还是有意义的。现在网上搜一下,可能还可以找得到windows下面的pro*c编译环境,但是linux下基本上没有,当然你愿意啃E文的话,可能还是有一些的,但是大部分都只能通过介绍oracle

9i的安装来获得我们需要的pro*c编译环境,如果只是单纯想安装pro*c,那是没有的,所以才想到写下来记录一下。

在linux安装orace 9i是很麻烦的事情,首先,按照官方的说法,oracle是只支持red

hat的,虽然服务器大部分都是,但我想作为开发人员,肯定用的发行版都是五花八门了。总体而言,在ubuntu下安装oracle9i主要存在这几点麻烦:1.需要打补丁,而且补丁也难下;2.安装时中文不支持;3.为了这个功能要装这个庞然大物;4.部分动态链接库很老的版本不好找;5.oracle9i的安装光盘实在不好拿到;6.安装时间好长。

首先,当然是到oracle的网站下载文件了,下面是地址 http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html。我们主要要安装这几个,oracle精简客户端,sqlplus以及pro*c。所以要分别下载这几个文件instantclient-basic-linux32-11.1.0.7.zip,instantclient-sqlplus-linux32-11.1.0.7.zip,instantclient-precomp-linux32-11.1.0.7.zip。

现在安装oracle精简客户端及sqlplus。首先创建目录并解压文件,如下:

$ cd /opt

$ sudo mkdir ora11g & cd ora11g

$ unar instantclient-basic-linux.x64-11.2.0.4.0.zip

$ unar instantclient-sqlplus-linux.x64-11.2.0.4.0.zip

$ unar instantclient-precomp-linux.x64-11.2.0.4.0.zip

$ cdinstantclient_11_2

$ sudo mkdir lib bin

把所有程序文件拷入bin,库文件拷入lib

cd

lib

sudo ln

-s libclntsh.so.11.1

libclntsh.so

编辑一下主目录下.bash_profile设置几个环境变量

export

ORACLE_HOME=/opt/ora11g/instantclient_11_2

export

TNS_ADMIN=$ORACLE_HOME/network/admin

export

NLS_LANG='simplified chinese_china'.UTF8

export

PATH=$ORACLE_HOME/bin:$PATH

将找个要用的服务名tnsnames.ora拷到相应路径下,像我的是/opt/ora11g/instantclient_11_2/network/admin,没有目录则新建

加载一下环境变量

$. ~/.bash_profile

还要安装一下aio库还要将oracle的路径加进ld.conf

$sudo apt-get install libaio1

$sudo vi /etc/ld.so.conf.d/ora11gcliet.conf

加上如下内容:

/opt/ora11g/instantclient_11_2/lib

更新一下

$sudo ldconfig -v

应该可以了

a4c26d1e5885305701be709a3d33442f.png

写个helloworld验证一下我们的pro*c能不能用了。。

#include

#include

EXEC

SQL INCLUDE sqlca;

EXEC

SQL INCLUDE oraca;

EXEC

ORACLE OPTION(ORACA=YES);

EXEC

SQL BEGIN DECLARE SECTION;

VARCHAR

v_username[20];

VARCHAR

v_password[20];

EXEC

SQL END  DECLARE

SECTION;

void

sqlerror();

int

main(){

v_username.len =

sprintf(v_username.arr,"tpibs@ywdev");

v_password.len =

sprintf(v_password.arr,"tppw123");

EXEC SQL

WHENEVER SQLERROR DO sqlerror();

EXEC SQL

CONNECT :v_username IDENTIFIED BY :v_password;

printf("\nconn ORACLE

,user:%s\n",v_username.arr);

EXEC SQL

COMMIT WORK RELEASE;

return

0;

}

void

sqlerror(){

EXEC SQL

WHENEVER SQLERROR CONTINUE;

printf("\nORACLE error detected:\n");

printf("\n%.70s\n",sqlca.sqlerrm.sqlerrmc);

Exec sql

rollback RELEASE;

}

再写个简单的makefile

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngTARGET=hello

a4c26d1e5885305701be709a3d33442f.png

SRCS=main.c

a4c26d1e5885305701be709a3d33442f.png

OBJS=main.o

a4c26d1e5885305701be709a3d33442f.png

COMMLIB=-lpthread-lclntsh

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

LINKER=$(CC)

a4c26d1e5885305701be709a3d33442f.png

RM=/bin/rm-f

a4c26d1e5885305701be709a3d33442f.png

PROC=proc

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

PROCFLAGS=code=ANSI_C ireclen=2048oreclen=2048parse=none include=/usr/include\a4c26d1e5885305701be709a3d33442f.png

 include=/usr/include/linux\a4c26d1e5885305701be709a3d33442f.png

 include=/usr/local/include\a4c26d1e5885305701be709a3d33442f.png

include=/usr/lib/gcc/i486-linux-gnu/4.3.3/include

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

CFLAGS=-I$(ORACLE_HOME)/precomp/public\a4c26d1e5885305701be709a3d33442f.png-L$(ORACLE_HOME)/lib

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png .SUFFIXES:.o.c.pc

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png .c.o:a4c26d1e5885305701be709a3d33442f.png

 $(CC)-c $(CFLAGS) $



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3